package com.letv.core.bean;

/**
 * 请求壳对象
 * 
 * @author zhuqiao
 *
 */
public class DataHull {

    /**
     * 请求数据到分派给解析器解析，所有状态
     * 
     * DATA_IS_NULL 请求返回数据是空串或NULL时
     * 
     * DATA_PARSE_EXCEPTION 在进入解析器后，parse方法在解析异常时
     * 
     * CONNECTION_FAIL 请求网络时，连接失败或超时，IO异常时
     * 
     * DATA_IS_INTEGRITY 没有出现任何异常，完整完成整个过程时
     * 
     * PARAMS_IS_NULL 参数为空时
     * 
     * REQUESTMETHOD_IS_ERR 请求不是get或post时
     * 
     * DATA_PARSER_IS_NULL 传入的解析器对象为空时
     * 
     * DATA_CAN_NOT_PARSE 数据对象不满足解析器 canParse验证时
     * 
     * */
    public interface DataType {
        /**
         * 数据为空
         * */
        int DATA_IS_NULL = 0x100;
        /**
         * 数据解析错误
         * */
        int DATA_PARSE_EXCEPTION = 0x101;
        /**
         * 连接失败
         * */
        int CONNECTION_FAIL = 0x102;
        /**
         * 数据完整
         * */
        int DATA_IS_INTEGRITY = 0x103;
        /**
         * 请求参数为空
         * */
        int PARAMS_IS_NULL = 0x104;
        /**
         * 请求方式不正确
         * */
        int REQUESTMETHOD_IS_ERR = 0x105;
        /**
         * 解析器为空
         * */
        int DATA_PARSER_IS_NULL = 0x106;
        /**
         * 数据不符合解析头文件判断
         * */
        int DATA_CAN_NOT_PARSE = 0x107;
        /**
         * 为解析方法提供元数据时，错误
         * */
        int DATA_IS_ERR = 0x108;
        /**
         * 接口数据无更新
         * */
        int DATA_NO_UPDATE = 0x109;
        /**
         * token丢失
         * */
        int TOKEN_LOSE = 0x110;
    }

    /**
     * 数据状态
     */
    private int dataType;

    /**
     * 原始数据
     */
    private String sourceData = "";

    /**
     * 错误信息
     */
    private int errMsg;

    /**
     * 服务器信息
     */
    private String message = "";

    /**
     * 接口时间轴
     */
    private String markId = "";

    /**
     * 统计用的errorMsg.原getErrorString()
     */
    private String reportErrorString = "";

    /**
     * 错误信息
     */
    private final String[] errorInfo = new String[3];

    public int getDataType() {
        return dataType;
    }

    public void setDataType(int dataType) {
        this.dataType = dataType;
    }

    public String getSourceData() {
        return sourceData;
    }

    public void setSourceData(String sourceData) {
        this.sourceData = sourceData;
    }

    public int getErrMsg() {
        return errMsg;
    }

    public void setErrMsg(int errMsg) {
        this.errMsg = errMsg;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMarkId() {
        return markId;
    }

    public void setMarkId(String markId) {
        this.markId = markId;
    }

    public String getReportErrorString() {
        return reportErrorString;
    }

    public void setReportErrorString(String reportErrorString) {
        this.reportErrorString = reportErrorString;
    }

    public final String[] getErrorInfo() {
        return errorInfo;
    }

    public void addErrorInfo(int index, String info) {
        if (index >= 3 || index < 0) {
            return;
        }
        errorInfo[index] = info;
    }
}
